import Blog from '../model/Blog.js'
import {Op} from 'sequelize'

let fn_list = async (ctx, next) => {
  // 从查询字符串中 获取keywork
  let keyword = ctx.request.query.keyword || ' '
  keyword = keyword.trim()      // 去除多余的空白字符
  // console.log(keyword);
  // 通过keywork筛选对应的条件
  let blogs
  if(keyword){
    blogs = await Blog.findAll({
      where:{
        [Op.or]:[
          {
            title: {
              [Op.like]: `%${keyword}%`
            }
          },
          {
            author: {
              [Op.like]: `%${keyword}%`
            }
          },
          {
            description: {
              [Op.like]: `%${keyword}%`
            }
          }
        ]
      }
    });
  }else{
    blogs = await Blog.findAll();
  }
  // 最后，想把它变成这样的使用
  ctx.render('blogs.html', {
    blogs,keyword
  })
}
let fn_getById = async (ctx, next) => {
  let id = ctx.params.id || 0;
  let blog = await Blog.findByPk(id);
  // 编辑页面传入数据
  ctx.render('blogsAddOrEdit.html', { blog })
}
let fn_add = async (ctx, next) => {
  let obj = ctx.request.body;
  // console.log(obj);

  Blog.create(obj);
  ctx.body = '新增成功'
  // ctx.render('blogsAdd.html');
}
let fn_update = async (ctx, next) => {
  let id = ctx.params.id || 0;
  let blog = Blog.findByPk(id);
  if (!blog) {
    ctx.body = '所要修改的博客不存在，请确认后重试'
  }
  let obj = ctx.request.body;
  // console.log(obj);

  // 将所有没有姓氏的人更改为 "Doe"
  await Blog.update(obj, {
    where: {
      id: id
    }
  });

  ctx.body = '修改成功'
}
let fn_del = async (ctx, next) => {
  // ctx.body = '删除某个博客'
  let id = ctx.params.id || 0;

  let blog = Blog.findByPk(id);
  if (!blog) {
    ctx.body = '要删除的指定记录不存在，请确认后重试'
  }

  // 删除所有名为 "Jane" 的人 
  await Blog.destroy({
    where: {
      id: id
    }
  });
  ctx.body = '删除成功';
}


export const obj = {
  'get /blogs': fn_list,
  'get /blogs/:id': fn_getById,
  'post /blogs': fn_add,
  'put /blogs/:id': fn_update,
  'delete /blogs/:id': fn_del,
}


// import { Blog } from '../model/Blog.js'

// let fn_list = async (ctx, next) => {
//   let blogs = await Blog.findAll();      //在页面上渲染数据库中的信息
//   // 使用 自定义方法，传入 要渲染的文件名称 和 一个对象
//   ctx.render('blogs.html', {
//     blogs
//   })
// }

// let fn_getById = async (ctx, next) => {
//   let id = ctx.params.id || 0
//   let blog = Blog.findByPk(id)
//   ctx.render('blogsAddOrEdit.html', { blog })
// }
// // 新增
// let fn_add = async (ctx, next) => {
//   let obj = ctx.request.body;
//   // console.log(obj);

//   Blog.create(obj);
//   // ctx.body = '新增博客'
// }
// // 修改
// let fn_update = async (ctx, next) => {
//   let id = ctx.params.id || 0;
//   let blog = Blog.findByPk(id)
//   if (!blog) {
//     ctx.body = '要修改的博客不存在'
//   }
//   let obj = ctx.request.body
//   await Blog.update(obj, {
//     where: {
//       id: id
//     }
//   })

// }
// // 删除
// let fn_del = async (ctx, next) => {
//   let id = ctx.params.id || 0;
//   let blog = Blog.findByPk(id)
//   if (!blog) {
//     ctx.body = '删除的博客不存在'
//   }
//   await Blog.destroy({
//     where: {
//       id: id
//     }
//   })

// }


// export const obj = {
//   'get /blogs': fn_list,
//   'get /blogs/:id': fn_getById,
//   'post /blogs': fn_add,
//   'put /blogs/:id': fn_update,
//   'delete /blogs/:id': fn_del
// }